package com.syh.jn.scm.domain.supplier.entity.base.downstream;

import cn.redscarf.commons.util.bean.ExtBeanUtils;
import cn.redscarf.commons.util.other.ExtAssert;
import cn.redscarf.commons.util.validator.ValidationUtils;
import com.syh.core.ddd.domain.AbstractSimpleAggregate;
import com.syh.jn.scm.dto.supplier.base.downstreamPriceTmplDetail.DownstreamPriceTmplDetailMto;
import com.syh.jn.scm.dto.supplier.base.downstreamPriceTmplDetail.DownstreamPriceTmplDetailSto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 客户商品报价详细
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class DownstreamPriceTmplDetail extends AbstractSimpleAggregate<Long> {

  /**
   * 新建客户商品报价详细
   *
   * @param sto
   */
  public DownstreamPriceTmplDetail(DownstreamPriceTmplDetailSto sto) {
    ExtAssert.notNull(sto, "对象为空");
    ValidationUtils.validate(sto);
    //系统默认生成字段
    super.initDefault();
    this.goodsPrice = BigDecimal.ZERO;
    this.quantity = BigDecimal.ZERO;
    this.quantityMax = new BigDecimal("9999");
    ExtBeanUtils.copyProperties(sto, this);
  }

  /**
   * 修改客户商品报价信息
   *
   * @param mto
   */
  public void modify(DownstreamPriceTmplDetailMto mto) {
    ExtAssert.notNull(mto, "对象为空");
    ValidationUtils.validate(mto);
    ExtBeanUtils.copyProperties(mto, this);
    this.lastUpdateTimeStamp = System.currentTimeMillis();
  }

  /**
   * 数据销毁
   */
  public void destroy() {

  }

  /**
   * 归属id
   */
  private Long businessEntityId;
  /**
   * 对应商品价格模板id
   */
  private Long templateId;
  /**
   * 商品id
   */
  private Long goodsId;
  /**
   * 商品名称
   */
  private String goodsName;
  /**
   * 商品条码
   */
  private String codeBar;
  /**
   * 商品编码
   */
  private String goodsCode;
  /**
   * 计量单位
   */
  private String units;
  /**
   * 规格
   */
  private String specName;
  /**
   * 分类id
   */
  private Long categoryId;
  /**
   * 所属种类,应用分类的父类目录
   */
  private String categoryCatalogCode;
  /**
   * 商品分类名
   */
  private String categoryName;
  /**
   * 单价
   */
  private BigDecimal goodsPrice;
  /**
   * 商品起订量
   */
  private BigDecimal quantity;
  /**
   * 商品最大下单量
   */
  private BigDecimal quantityMax;
}
